#pragma once
#include <opencv2/opencv.hpp>
#include <tensorflow/lite/interpreter.h>
#include <tensorflow/lite/model.h>
#include <tensorflow/lite/kernels/register.h>
#include <memory>
#include <string>
#include <vector>

class LanenetInference {
public:
    LanenetInference(const std::string& model_path);
    ~LanenetInference() = default;

    // 初始化模型
    bool init();
    
    // 执行推理
    std::string process(const cv::Mat& input_image);

private:
    std::string model_path_;
    std::unique_ptr<tflite::FlatBufferModel> model_;
    std::unique_ptr<tflite::Interpreter> interpreter_;
    
    // 辅助函数
    bool is_lane_pixel(const float* instance_seg_data, int idx, int num_channels);
    
    // 获取某一行的车道中心点
    float get_lane_center(const float* instance_seg_data, 
                         int y, int width, int num_channels);
                         
    // 确定转向方向
    std::string determine_direction(const float* instance_seg_data, 
                                  int height, int width);
}; 